Having inconsistent indentation and omitting curly braces from a control structure, such as an if
statement or for
loop,
is misleading and can induce bugs.
This rule raises an issue when the indentation of the lines after a control structure indicates an intent to include those lines in the block, but
the omission of curly braces means the lines will be unconditionally executed once.
The following patterns are recognized:
if (condition)
firstActionInBlock();
secondAction(); // Noncompliant: secondAction is executed unconditionally
thirdAction();
if (condition) firstActionInBlock(); secondAction(); // Noncompliant: secondAction is executed unconditionally
if (condition) firstActionInBlock();
secondAction(); // Noncompliant: secondAction is executed unconditionally
if (condition); secondAction(); // Noncompliant: secondAction is executed unconditionally
for (int i = 0; i < array.length; i++)
str = array[i];
doTheThing(str); // Noncompliant: executed only on the last element
Note that this rule considers tab characters to be equivalent to 1 space. When mixing spaces and tabs, a code may look fine in one editor but be
confusing in another configured differently.